#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>

int main()
{
  pid_t id=fork();
  if(id<0)
    return 1;
  else if(id==0)
  {
    //child
    execl("/usr/bin/ls","ls","-l","-a",NULL);
    exit(3);
  }
  else 
  {
    //parent
    int status=0;
    pid_t rid=waitpid(id,&status,0);
    if(rid>0)
    {
      if(WIFEXITED(status))
      {
        printf("exit_code=%d\n",WEXITSTATUS(status));
      }
    }
  }
  return 0;
}


//int main()
//{
//  while(1)
//  {
//    sleep(1);
//    printf("pid=%d\n",getpid());
//  }
//
//  return 0;
//}

//int g_val=100;
//
//int main()
//{
//  printf("parent process is running,pid=%d,ppid=%d\n",getpid(),getppid());
//
//  pid_t id=fork();
//  if(id==-1) return 1;
//  else if(id==0)
//  {
//    //child
//    int cnt=0;
//    while(1)
//    {
//      printf("I am child process,pid=%d,ppid=%d,g_val=%d,&g_val=%p\n",getpid(),getppid(),g_val,&g_val);
//      sleep(1);
//      cnt++;
//      if(cnt==5)
//      {
//        g_val=300;
//        printf("I am child process,g_val change %d -> %d\n",100,300);
//      }
//    }
//  }
//  else 
//  {
//    //parent
//    while(1)
//    {
//      printf("I am parent process,pid=%d,ppid=%d,g_val=%d,&g_val=%p\n",getpid(),getppid(),g_val,&g_val);
//      sleep(1);
//    }
//  }
//
//
//
//
//
//  //chdir("/home/zy/Linux_code/");
//
//  //FILE* pf=fopen("log.txt","w");
//  //if(pf==NULL)
//  //{
//  //  printf("fopen fail\n");
//  //  return 1;
//  //}
//  //fclose(pf);
//
//  //while(1)
//  //{
//  //  printf("I am a process,pid=%d,ppid=%d\n",getpid(),getppid());
//  //  sleep(1);
//  //}
//
//
//
////  while(1)
////  {
////    printf("I am a process ,pid=%d,ppid=%d\n",getpid(),getppid());
////    sleep(1);
////  }
////
//
//
////  printf("parent process begin...\n");
// // pid_t id=fork();
//
// // if(id==-1)
// // {
// //   printf("fork fail\n");
// //   return 1;
// // }
// // else if(id==0)
// // {
// //   //child
// //   while(1)
// //   {
// //     printf("I am child process,pid=%d,ppid=%d\n",getpid(),getppid());
// //     sleep(1);
// //   }
// // }
// // else 
// // {
// //   //parent
// //   while(1)
// //   {
// //     printf("I am parent process,pid=%d,ppid=%d\n",getpid(),getppid());
// //     sleep(2);
// //   }
// // }
//
//  return 0;
//}
